home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-21 | 3.0 KB | 138 lines | [TEXT/MPS ] |
- /*
- File: TestExceptions.cp
-
- Contains: Implementation of class TTestExceptions
-
- Copyright: © 1992-1993 by Apple Computer, Inc., all rights reserved.
-
- */
-
- #ifndef __TESTEXCEPTIONS__
- #include "TestExceptions.h"
- #endif
-
- /*******************************************************************************
- ** External Function
- ********************************************************************************/
-
- extern void ThrowException(long);
-
- /*******************************************************************************
- ** TTestExceptions routine
- ********************************************************************************/
-
- TTestExceptions::TTestExceptions()
- {}
-
- TTestExceptions::~TTestExceptions()
- {}
-
- void TTestExceptions::InitTest(Boolean, Boolean, int, char**)
- {}
-
- void TTestExceptions::EndTest(Boolean, Boolean)
- {}
-
- void TTestExceptions::RunTestIteration(Boolean verbose, Boolean debug)
- {
- DebugTest(debug, "About to Test Exceptions");
- if (verbose)
- Printf("# INFO: Testing CATCH\n");
-
- TRY
- ThrowException(-10);
- CATCH(-10)
- if (verbose)
- Printf("# INFO: Caught the Exception!\n");
- CATCH_ALL
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
- if (verbose)
- Printf("# INFO: Testing multiple CATCHs\n");
-
- TRY
- ThrowException(-20);
- CATCH(-10)
- Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
- CATCH(-20)
- if (verbose)
- Printf("# INFO: Caught the Exception!\n");
- CATCH(-30)
- Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
- CATCH_ALL
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
- if (verbose)
- Printf("# INFO: Testing CATCH_ALL\n");
-
- TRY
- ThrowException(-21);
- CATCH(-10)
- Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
- CATCH(-20)
- Printf("# ERROR: Exception caught in CATCH(-20) - #%d\n", ErrorCode());
- CATCH(-30)
- Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
- CATCH_ALL
- if (ErrorCode() == -21)
- {
- if (verbose)
- Printf("# INFO: Exception caugh in CATCH_ALL\n");
- }
- else
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
- if (verbose)
- Printf("# INFO: Testing FINALLY WITH EXCEPTION\n");
-
- Boolean flag = false;
- Volatile(flag);
-
- TRY
- Boolean flag = false;
- Volatile(flag);
- TRY
- RAISE(-10);
- FINALLY
- flag = true;
- if (verbose)
- Printf("# INFO: Reached FINALLY code\n");
- ENDTRY
- if (!flag)
- Printf("# ERROR: Never reached FINALLY code\n");
- CATCH_ALL
- flag = true;
- if (verbose)
- Printf("# INFO: Reached outer CATCH code\n");
- ENDTRY
-
- if (!flag)
- Printf("# ERROR: FINALLY section did not rethrow exception\n");
-
-
-
- if (verbose)
- Printf("# INFO: Testing FINALLY WITHOUT EXCEPTION\n");
-
- TRY
- Boolean flag = false;
- Volatile(flag);
- TRY
- // nothing to do here
- FINALLY
- flag = true;
- if (verbose)
- Printf("# INFO: Reached FINALLY code\n");
- ENDTRY
- if (!flag)
- Printf("# ERROR: Never reached FINALLY code\n");
- CATCH_ALL
- if (verbose)
- Printf("# ERROR: FINALLY section rethrew exception\n");
- ENDTRY
-
- }
-